package com.esd.db.service;

import java.util.List;

import com.esd.db.model.VtdParameter;

public interface VtdParameterService {
	
    List<VtdParameter> selectActiveAll();
    
    /**
	 * 按类型查找参数  不包括无效的
	 * @param type
	 * @return
	 */
    List<VtdParameter> selectParamByType(String type);
    
    /**
     * 查询参数类型总数 包括无效的
     * @param type 参数类型
     * @return
     */
    int countAllByParamType(String type);
    
    int saveParameter(VtdParameter param);
    
    /**
     * 检查参数是否已经存在
     * @param paramName 被检查的参数名
     * @param paramType 参数类型
     * @return 如果存在返回true  否则返回false
     */
	boolean isParamExist(String paramName, String paramType);
    
	/**
	 * 按类型查找所有的参数 包括无效的
	 * @param type
	 * @return
	 */
	List<VtdParameter> selectAllParamByType(String type);
	
	/**
	 * 修改参数是否可用
	 * @param prarmId  参数id
	 * @return
	 */
	int changeParamActiveById(int paramId);
	
	/**
	 * 根据id 修改参数名称
	 * @param paramId
	 * @param paramName
	 * @return
	 */
	int updateParamNameById(int paramId, String paramName);
	
	/**
	 * 根据id 修改参数值
	 * @param paramId
	 * @param paramValue
	 * @return
	 */
	int updateParamValueById(int paramId, String paramValue);
	
	/**
	 * 根据id 修改备注
	 * @param paramId
	 * @param remarks
	 * @return
	 */
	int updateRemarksById(int paramId, String remarks);
	
	String selectMaxParamValueByParamType(String paramType);
	
	/**
	 * 根据参数值和参数类型查询备注信息
	 * @param paramVlaue
	 * @param paramType
	 * @return
	 */
	String selectRemarksByParamVlaueAndParamType(String paramVlaue, String paramType);
	
	/**
	 * 
	 * @param id
	 * @return
	 */
	VtdParameter selectParamById(int id);
	
	/**
	 * 根据value和type修改backup1字段
	 * @param paramVlaue
	 * @param paramType
	 * @param backup1
	 * @return
	 */
	int updateBackup1ByParamValueAndParamType(String paramVlaue, String paramType, String backup1);

	VtdParameter getParamValueByParamTypeAndParamName(String paramType, String paramName);

	int updateBackup2ById(int paramId, String subsidyFinal);

	double getBackup2ByParamValueAndParamType(String workGroupCode, String workGroup);
	
	/**
	 * 修改工作组可用状态并同时修改整组用户的可用状态
	 * @param paramId
	 * @return
	 */
	boolean changeParamActiveAndChangeUserStatusByParamId(int paramId);
	
}
